# Define your item pipelines here
"""
当item生成后，会自动被送到Pipeline进行处理，我们常用itemPipelinne来进行如下操作
数据清洗
验证爬取数据，检查爬取字段
查重并丢弃重复内容
对爬取结果进行存储  (主要)
open_spider  当Spider开启时 这个方法被调用  主要进行一些初始化操作
close_spider 当Spider关闭时 这个方法被调用  主要用于存储关闭和释放
"""
import pandas as pd
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class Day13Pipeline:
    def process_item(self, item, spider):
        return item

class DoubanExcelPipeLine:
    def open_spider(self, spider):
        """
        初始化
        """

        # 创建一个writer文件写入对象 数据写入文件
        self.writer = pd.ExcelWriter('movies.xlsx')
        self.data = []

    def process_item(self, item, spider):
        """
        数据处理  将豆瓣数据对象存入到self.data中
        :param item:豆瓣数据对象
        :return:
        """
        self.data.append({
            '标题': item['title'],
            '简介': item['content'],
        })
        return item

    def close_spider(self,spider):
        """
        爬虫结束后将数据写入到Excel文件中 并且关闭文件
        :return:
        """
        df = pd.DataFrame(self.data)
        df.to_excel(self.writer, index=False)
        self.writer.close()